namespace Universal.Domain.Events;

/// <summary>
/// 领域事件调度器接口(调度就是分发)
/// </summary>
/// <remarks>
/// 领域事件调度器是用于调度领域事件的组件，它负责在事件发生时执行相应的业务逻辑。
/// 调度器通常是异步的，以避免阻塞主线程。
/// </remarks>
public interface IDomainEventDispatcher
{
    /// <summary>
    /// 调度领域事件
    /// </summary>
    /// <param name="events">要调度的领域事件集合</param>
    /// <param name="cancellationToken">用于控制异步操作的取消，不影响事件的基本处理流程</param>
    /// <returns>异步操作的结果</returns>
    Task DispatchAsync(IEnumerable<IDomainEvent> events, CancellationToken cancellationToken = default);

}